package com.sumainfor.pc.gmio.controller.assistant;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sumainfor.common.util.FieldCheckUtil;
import com.sumainfor.common.util.JsonResult;
import com.sumainfor.pc.gmio.service.RatesService;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * @Author Jack Chen
 * @Create 2019-01-23 17:51
 * 各地区收费标准
 */
@RestController
@RequestMapping("/rates")
public class RatesController {

    @Autowired
    private RatesService ratesService;

    /**
     * 获得所有的收费标准数据列表
     *
     * @return
     */
    @RequestMapping("/getDataList")
    public JsonResult getDataList() {
        return ratesService.getDataList();
    }

    /**
     * 获得收费标准详细的信息
     *
     * @param id
     * @return
     */
    @PostMapping("/getItemInfoById")
    public JsonResult getItemInfoById(String id) {
        if (StringUtils.isBlank(id)) {
            return JsonResult.errorForEmpty();
        }
        return JsonResult.success();
    }


    /**
     * 获得公司数据
     *
     * @param page
     * @return
     */
    @RequestMapping("/getGosList")
    public JsonResult getGosList(Page page) {
        return ratesService.getGosList(page);
    }


    /**
     * 获得城市数据
     *
     * @return
     */
    @RequestMapping("/getCityList")
    public JsonResult getLevelCityForSpinner(Page page) {
        return ratesService.getLevelCityForSpinner(page);
    }


    /**
     * 服务中心： 服务中心 下拉框数据 选择城市 / 选择服务中心
     *
     * @param cityId 城市编号
     * @param page
     * @return
     */
    @RequestMapping("/getCenterListByCityId")
    public JsonResult getLevelServerCenterForSpinner(Page page, String cityId) {
        return ratesService.getLevelServerCenterForSpinner(page, cityId);
    }


    /**
     * 查询小区数据 根据服务中心的编号
     *
     * @param page
     * @param params
     * @return
     */
    @RequestMapping("/getProjectListByCenterId")
    public JsonResult selectProjectListView(Page page, @RequestParam Map<String, Object> params) {
        return ratesService.selectProjectListView(page, params);
    }

    /**
     * 查询小区数据的所有的房源信息
     *
     * @param page
     * @param params: 参数：
     *                projectId - 小区编号
     *                centerId - 服务中心编号
     *                where - 条件
     *                -par1 在租中
     *                -par2 待租中
     *                -par3 装修中
     *                -par4 整租
     *                -par5 合租
     * @return
     */
    @RequestMapping("/getHousingListViewByProjectId")
    public JsonResult selectHousingListView(Page page, @RequestBody Map<String, Object> params) {
        if (params.containsKey("where")) {
            Map<String, Object> where = (Map<String, Object>) MapUtils.getObject(params, "where");
            if (MapUtils.isEmpty(where)) {
                params.remove("where");
            }

            long count = where.values().stream().filter(v -> (Boolean) v == true).count();
            if (count == 0) {
                params.remove("where");
            }

        }
        return ratesService.selectHousingListView(page, params);
    }


    /**
     * 添加一条新数据
     *
     * @param params
     * @return
     */
    @PostMapping("/addData")
    public JsonResult addData(@RequestBody Map<String, Object> params) {
//        String[] keys = {"ChaName", "WaterPricing", "WaterPricings", "GasPricing", "GasPricings",
//                "EleFee", "NetworkFee", "OpenFee", "WaDeposit","ChangeRoom","SubleaseService"};
//        if (!FieldCheckUtil.isMapFieldNotNull(params, keys)) {
//            return JsonResult.errorForEmpty();
//        }
        return ratesService.addData(params);
    }

    /**
     * 删除一个收费标准
     *
     * @param chaId
     * @return
     */
    @PostMapping("/deleteRatesById")
    public JsonResult deleteRatesById(String chaId) {
        if (StringUtils.isBlank(chaId)) {
            return JsonResult.errorForEmpty();
        }
        return ratesService.deleteRatesById(chaId);
    }


    /**
     * 获取收费标准数据
     *
     * @param id
     * @return
     */
    @RequestMapping("/getRatesDataInfo")
    public JsonResult getRatesDataInfo(String id) {
        if (StringUtils.isBlank(id)) {
            return JsonResult.errorForEmpty();
        }
        return ratesService.getRatesDataInfo(id);
    }

}
